eventcontroller: Add private ::filter method
authorCarlos Garnacho <carlosg@gnome.org>
Thu, 9 Jul 2015 16:55:32 +0000 (18:55 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Wed, 12 Aug 2015 21:20:25 +0000 (23:20 +0200)
This will be used right before handle_event() in order to filter
out events, useful to make the previous "no touchpad events" behavior
the default, and have gesture subclasses include manually the touchpad
events they handle.

gtk/gtkeventcontroller.c
gtk/gtkeventcontrollerprivate.h

index a5cfde1e3e5cdbae310ad798d3fdb28a20be650f..544984637104463aa1db71464bc5cf28fab359a8 100644 (file)
@@ -145,6 +145,7 @@ gtk_event_controller_class_init (GtkEventControllerClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
+  klass->filter_event = gtk_event_controller_handle_event_default;
   klass->handle_event = gtk_event_controller_handle_event_default;
 
   object_class->set_property = gtk_event_controller_set_property;
@@ -218,6 +219,9 @@ gtk_event_controller_handle_event (GtkEventController *controller,
 
   controller_class = GTK_EVENT_CONTROLLER_GET_CLASS (controller);
 
+  if (controller_class->filter_event (controller, event))
+    return retval;
+
   if (controller_class->handle_event)
     {
       g_object_ref (controller);
index 603da71a7d6bda6ee5e01482c342a7133569e846..2f66ecccbc6d5b9154bc14e690fa4fdd74d310c4 100644 (file)
@@ -36,6 +36,9 @@ struct _GtkEventControllerClass
   void     (* reset)        (GtkEventController *controller);
 
   /*<private>*/
+
+  gboolean (* filter_event) (GtkEventController *controller,
+                             const GdkEvent     *event);
   gpointer padding[10];
 };